package com.acol.estagio.workflow.struts.action;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.acol.estagio.workflow.services.util.EstagioServices;
import com.acol.estagio.workflow.struts.form.GerenciarCampeonatoForm;
import com.acol.estagio.workflow.struts.form.GerenciarJogosForm;
import com.acol.estagio.workflow.struts.form.GerenciarTimesForm;
import com.acol.estagio.workflow.vo.ContaVO;
import com.acol.estagio.workflow.vo.JogosVO;
import com.acol.util.CollectionsUtil;

public class GerenciarJogosAction extends DispatchAction{
	ContaVO contaVO = new ContaVO();
	
	public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarJogosForm frm = (GerenciarJogosForm) form;
		frm.reset(mapping, request);
		frm.inicializar();
		frm.setSeqCampeonato(new Integer(request.getParameter("seqCampeonato")));
		return editarJogos(mapping, form, request, response);
	}
	public ActionForward mostrarResultados(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		//HttpSession sessao = request.getSession(true);
		GerenciarJogosForm frm = (GerenciarJogosForm) form;
		contaVO = (ContaVO) request.getSession().getAttribute("contaVO");
		frm.reset(mapping, request);
		frm.inicializar();
		frm.setSeqCampeonato(new Integer(request.getParameter("seqCampeonato")));
		frm.setListaJogos((ArrayList)EstagioServices.getCampeonatoBean().getListaJogos(new Integer(332)));
		
		return mapping.findForward("mostrarResultados");
	}
	public ActionForward inserirJogos(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarJogosForm frm = (GerenciarJogosForm) form;
		JogosVO jogosVO = new JogosVO();
		ActionErrors errors = frm.validate(mapping, request);

		if(errors.isEmpty()){

			jogosVO.setSeqTimeCasa(frm.getJogosVO().getSeqTimeCasa());
			jogosVO.setSeqTimeVisitante(frm.getJogosVO().getSeqTimeVisitante());
			jogosVO.setSeqCampeonato(frm.getJogosVO().getSeqCampeonato());
			jogosVO.setRodadaJogo(frm.getJogosVO().getRodadaJogo());
			jogosVO.setDataJogo(frm.getJogosVO().getDataJogo());//(frm.getTimesVO().getEmblema());
			jogosVO.setResultadoJogo(frm.getJogosVO().getResultadoJogo());
			EstagioServices.getCampeonatoBean().inserirJogos(jogosVO);
			
			frm.reset(mapping, request);
			errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("sucesso.jogos.inserir", request.getContextPath() + "/images/icon_sucesso.gif", "timeCasa", "timeVisitante"));
			saveErrors(request, errors);
			
			return mapping.findForward("cadastrarJogos");

		}else{
			saveErrors(request, errors);
			return mapping.findForward("cadastrarJogos");

		}

	}
	public ActionForward selecionarJogos(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarJogosForm frm = (GerenciarJogosForm) form;
		JogosVO jogosVO = new JogosVO();
		Integer seqJogo = frm.getSeqCampeonato();

		jogosVO = EstagioServices.getCampeonatoBean().getJogo(seqJogo);
		
		frm.getJogosVO().setSeqJogo(jogosVO.getSeqJogo());
		frm.getJogosVO().setSeqTimeCasa(jogosVO.getSeqTimeCasa());
		frm.getJogosVO().setSeqTimeVisitante(jogosVO.getSeqTimeVisitante());
		frm.getJogosVO().setSeqCampeonato(jogosVO.getSeqCampeonato());
		frm.getJogosVO().setRodadaJogo(jogosVO.getRodadaJogo());
		frm.getJogosVO().setDataJogo(jogosVO.getDataJogo());
		frm.getJogosVO().setResultadoJogo(jogosVO.getResultadoJogo());
		
		return mapping.findForward("cadastrarJogos");

	}
	public ActionForward editarJogos(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarJogosForm frm = (GerenciarJogosForm) form;
		Integer seqCampeonato = frm.getSeqCampeonato();
		Collection listaJogos = EstagioServices.getCampeonatoBean().getListaJogos(seqCampeonato);
		frm.setListaJogos((ArrayList)listaJogos);
		frm.setarEditavel(frm.getListaJogos());
		return mapping.findForward("editarResultados");
		
	}
	public ActionForward atualizarJogos(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarJogosForm frm = (GerenciarJogosForm)form;
		Iterator<JogosVO> it = frm.getListaJogos().iterator();
		while(it.hasNext()){
			JogosVO jogosVO = it.next();
			String resultadoJogo = null;
			String dataJogo      = null;
			
			if(jogosVO.isEditavel()){
				for(int i=0; i < frm.getListaJogos().size(); i++){
					if(!(frm.getVetPlacarCasa()[i].equals("") && frm.getVetPlacarVisitante()[i].equals(""))){
						
						jogosVO.setPlacarCasa(frm.getVetPlacarCasa()[i]);
						jogosVO.setPlacarVisitante(frm.getVetPlacarVisitante()[i]);
						
//						if( jogosVO.getVetPlacarCasa().equals("") && !jogosVO.getVetPlacarVisitante().equals(""))jogosVO.setVetPlacarCasa("0");
//						if( !jogosVO.getVetPlacarCasa().equals("") && jogosVO.getVetPlacarVisitante().equals(""))jogosVO.setVetPlacarVisitante("0");
//						if(new Integer(jogosVO.getVetPlacarCasa()).intValue() <= 9)jogosVO.setPlacarCasa("0".concat(jogosVO.getVetPlacarCasa()));
//						if(new Integer(jogosVO.getVetPlacarVisitante()).intValue() <= 9)jogosVO.setPlacarVisitante("0".concat(jogosVO.getVetPlacarVisitante()));
						
						resultadoJogo = jogosVO.getPlacarCasa() + " x " + jogosVO.getPlacarVisitante();	
					}else{
						resultadoJogo = " x ";
					}
					if(!jogosVO.getDiaMesAnoJogo().equals("") && !jogosVO.getHoraJogo().equals("")){
						dataJogo = jogosVO.getDiaMesAnoJogo().trim()+ " - " + jogosVO.getHoraJogo().trim();
					}
					
					jogosVO.setDataJogo(dataJogo);
					jogosVO.setResultadoJogo(resultadoJogo);
					EstagioServices.getCampeonatoBean().alterarJogo(jogosVO);
				}
			}
		}
		return mapping.findForward("mostrarResultados");
	}
	public ActionForward excluirJogo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarTimesForm frm = (GerenciarTimesForm)form;
		Integer seqJogo = frm.getSeqTime();

		EstagioServices.getCampeonatoBean().excluirJogo(seqJogo);

		return mapping.findForward("");
	}
	public ActionForward mudarEditavel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarJogosForm frm = (GerenciarJogosForm)form;
		Integer index = new Integer(frm.getIndex());
		JogosVO jogosVO = new JogosVO();
		jogosVO = (JogosVO)frm.getListaJogos().get(index);
		jogosVO.setEditavel(true);
		
		String[] placar = jogosVO.getResultadoJogo().split(" x "); 		
		jogosVO.setPlacarCasa(placar[0]);
		jogosVO.setPlacarVisitante(placar[1]);

		String[] data = jogosVO.getDataJogo().split("  -  ");
		jogosVO.setDiaMesAnoJogo(data[0]);
		jogosVO.setHoraJogo(data[1]);
		frm.getListaJogos().set(index, jogosVO);
		return mapping.findForward("editarResultados");
	}
//	public ActionForward listarJogos(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//		GerenciarTimesForm frm = (GerenciarTimesForm)form;
//		Collection listaJogos = new ArrayList();
//		
//		if(request.getParameter("") == null){
//			listaJogos = EstagioServices.getCampeonatoBean().getListaJogos();
//		}else{
//			Integer seqCampeonato = new Integer(request.getParameter(""));
//			listaJogos = EstagioServices.getCampeonatoBean().getListaJogos(seqCampeonato);
//		}
//		frm.setListaTimes(listaJogos);
//		
//		return mapping.findForward("");
//	}
	public ActionForward voltar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		GerenciarJogosForm frm = (GerenciarJogosForm) form;
		response.sendRedirect(request.getContextPath()+"/gerenciarCampeonato.do?task=unspecified");
		return null;
		
	}
}